package sige

class Contrato {

    static constraints = {
        aluno nullable: false
        responsavel nullable: true
        
        turma nullable: false
        anulacao nullable: true
        anuidade nullable: true
    }
    
    static mapping = {
        anuidade cascade: 'all-delete-orphan'
    }
    
    static belongsTo = [turma : Turma]
    
    static hasOne = [
        anulacao : AnulacaoDeMatricula
    ]
    
    static hasMany = [
        redimentos : RendimentoEscolar
    ]
    
    Aluno aluno
    Responsavel responsavel
    DespesaVariavel anuidade
    Date dataDaMatricula
    boolean ativo
    
    boolean isAtivo(){
        ( turma?.ano?.dataDeFechamento > (new Date()).clearTime() ) && anulacao == null && responsavel != null
    }
    
    boolean isCorrente(){
        return anulacao == null && responsavel != null && (turma?.ano?.id == AnoLetivo.corrente()?.id )
    }
}
